table of contents
SIGSUSPEND(2) | Руководство программиста Linux | SIGSUSPEND(2) |
ИМЯ¶
sigsuspend - ожидает сигнала
ОБЗОР¶
#include <signal.h>
int sigsuspend(const sigset_t *mask);
Требования
макроса
тестирования
свойств
для glibc (см.
feature_test_macros(7)):
sigsuspend(): _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_SOURCE
ОПИСАНИЕ¶
Вызов sigsuspend() временно заменяет маску сигналов вызывающего процесса маской, указанной в mask, и затем приостанавливает процесс до тех пор, пока не поступит сигнал, для которого запустится обработчик сигнала или это приведёт к завершению процесса.
Если по сигналу процесс завершается, то вызов sigsuspend() не возвращает управление обратно в программу. Если сигнал пойман, то возврат из sigsuspend() произойдёт после завершения выполнения обработчика, и маска сигналов восстановится в значение, которое было до вызова sigsuspend().
Сигналы SIGKILL и SIGSTOP невозможно заблокировать; указание этих этих сигналов в mask не влияет на маску сигналов процесса.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ¶
Вызов sigsuspend() всегда возвращает -1, обычно с ошибкой EINTR.
ОШИБКИ¶
СООТВЕТСТВИЕ СТАНДАРТАМ¶
POSIX.1-2001.
ЗАМЕЧАНИЯ¶
Обычно, sigsuspend() используется вместе с sigprocmask(2), чтобы предотвратить доставку сигнала при выполнении критического участка кода. Сначала вызывающий блокирует сигналы с помощью sigprocmask(2). Когда критический участок выполнен, вызывающий начинает ждать сигналов с помощью вызова sigsuspend(), указав маску, значение которой было возвращено вызовом sigprocmask(2) (в аргументе oldset).
Подробная информация о работе с наборами сигналов есть на странице sigsetops(3).
СМОТРИТЕ ТАКЖЕ¶
kill(2), pause(2), sigaction(2), signal(2), sigprocmask(2), sigwaitinfo(2), sigsetops(3), sigwait(3), signal(7)
2008-08-29 | Linux |